
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_Hans">
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>对新贡献者的建议 &#8212; Django 3.2.11.dev 文档</title>
    <link rel="stylesheet" href="../../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
    <script type="text/javascript" id="documentation_options" data-url_root="../../" src="../../_static/documentation_options.js"></script>
    <script type="text/javascript" src="../../_static/jquery.js"></script>
    <script type="text/javascript" src="../../_static/underscore.js"></script>
    <script type="text/javascript" src="../../_static/doctools.js"></script>
    <script type="text/javascript" src="../../_static/language_data.js"></script>
    <link rel="index" title="索引" href="../../genindex.html" />
    <link rel="search" title="搜索" href="../../search.html" />
    <link rel="next" title="报告问题和请求新功能" href="bugs-and-features.html" />
    <link rel="prev" title="为 Django 做贡献" href="index.html" />



 
<script src="../../templatebuiltins.js"></script>
<script>
(function($) {
    if (!django_template_builtins) {
       // templatebuiltins.js missing, do nothing.
       return;
    }
    $(document).ready(function() {
        // Hyperlink Django template tags and filters
        var base = "../../ref/templates/builtins.html";
        if (base == "#") {
            // Special case for builtins.html itself
            base = "";
        }
        // Tags are keywords, class '.k'
        $("div.highlight\\-html\\+django span.k").each(function(i, elem) {
             var tagname = $(elem).text();
             if ($.inArray(tagname, django_template_builtins.ttags) != -1) {
                 var fragment = tagname.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + tagname + "</a>");
             }
        });
        // Filters are functions, class '.nf'
        $("div.highlight\\-html\\+django span.nf").each(function(i, elem) {
             var filtername = $(elem).text();
             if ($.inArray(filtername, django_template_builtins.tfilters) != -1) {
                 var fragment = filtername.replace(/_/, '-');
                 $(elem).html("<a href='" + base + "#" + fragment + "'>" + filtername + "</a>");
             }
        });
    });
})(jQuery);</script>

  </head><body>

    <div class="document">
  <div id="custom-doc" class="yui-t6">
    <div id="hd">
      <h1><a href="../../index.html">Django 3.2.11.dev 文档</a></h1>
      <div id="global-nav">
        <a title="Home page" href="../../index.html">Home</a>  |
        <a title="Table of contents" href="../../contents.html">Table of contents</a>  |
        <a title="Global index" href="../../genindex.html">Index</a>  |
        <a title="Module index" href="../../py-modindex.html">Modules</a>
      </div>
      <div class="nav">
    &laquo; <a href="index.html" title="为 Django 做贡献">previous</a>
     |
    <a href="../index.html" title="Django internals" accesskey="U">up</a>
   |
    <a href="bugs-and-features.html" title="报告问题和请求新功能">next</a> &raquo;</div>
    </div>

    <div id="bd">
      <div id="yui-main">
        <div class="yui-b">
          <div class="yui-g" id="internals-contributing-new-contributors">
            
  <div class="section" id="s-advice-for-new-contributors">
<span id="advice-for-new-contributors"></span><h1>对新贡献者的建议<a class="headerlink" href="#advice-for-new-contributors" title="永久链接至标题">¶</a></h1>
<p>新来的贡献者，不知道该怎么办？ 想要提供帮助但是不知道如何开始？ 那这就是为你准备的部分。</p>
<div class="admonition-get-up-and-running admonition">
<p class="first admonition-title">Get up and running!</p>
<p class="last">如果您是 Django 新的贡献者，那么 <a href="#id1"><span class="problematic" id="id2">:文档:`/intro/contributing`</span></a> 教程将为您介绍这些工具和工作流程。</p>
</div>
<p>This page contains more general advice on ways you can contribute to Django,
and how to approach that.</p>
<p>如果你正在寻找关于代码贡献的细节参考，参见 <a class="reference internal" href="writing-code/index.html"><span class="doc">编写代码</span></a> 文档。</p>
<div class="section" id="s-first-steps">
<span id="first-steps"></span><h2>快速入门<a class="headerlink" href="#first-steps" title="永久链接至标题">¶</a></h2>
<p>从这些任务开始，去发现 Django 的开发过程。</p>
<ul>
<li><p class="first"><strong>分类工单</strong></p>
<p>如果一个`未审查的工单`_报告了一个错误，请尝试验证并重现它。如果您可以重现它并且它似乎是有效的，写一条记录以表明你确认了该错误并接受该工单。确保该工单归档在正确的组件区域。即使你不去修复bug本身，你也可以写一个用于测试bug的行为的补丁。查看更多内容请点击:ref:“我如何在分类方面帮忙”</p>
</li>
<li><p class="first"><strong>寻找已被接受的工单并审查补丁，以建立对代码库和流程的熟悉</strong></p>
<p>如果修补程序需要文档或测试，请标记相应的标志。查看补丁程序所做的更改，并留意与旧版但仍受支持的Python不兼容的语法。 :doc:<a href="#id1"><span class="problematic" id="id2">`</span></a>Run the tests ` 并确保它们通过。在可能的和相关的地方，在SQLite之外的数据库上尝试它们。留下评论和反馈！</p>
</li>
<li><p class="first"><strong>更新旧的的修补程序</strong></p>
<p>通常情况下，代码库会在提交补丁和审阅补丁之间发生变化。确保它仍然干净地应用，并按预期运行。更新补丁既有用又重要！更多信息请参见代码 <a class="reference internal" href="writing-code/submitting-patches.html"><span class="doc">提交补丁</span></a> 。</p>
</li>
<li><p class="first"><strong>撰写一些文档</strong></p>
<p>Django的文档很好，但它总是可以改进的。你发现打字错误了吗？你认为有什么需要澄清的吗？继续并建议一个文档修补程序！另请参阅指南 <a class="reference internal" href="writing-documentation.html"><span class="doc">编写文档</span></a> 。</p>
<div class="admonition note">
<p class="first admonition-title">注解</p>
<p class="last"><a href="#id1"><span class="problematic" id="id2">`</span></a>报告页`_包含了许多有用的Trac查询链接，包括一些像上面建议的那样对分类工单和审查补丁有用的链接。</p>
</div>
</li>
<li><p class="first"><strong>签署贡献者许可协议</strong></p>
<p>您编写的代码属于您或您的雇主。 如果您的贡献超过一至两行代码，则需要签署 <a class="reference external" href="https://www.djangoproject.com/foundation/cla/">CLA</a> 。 有关更详尽的解释，请参阅  <a class="reference external" href="https://www.djangoproject.com/foundation/cla/faq/">Contributor License Agreement FAQ</a>”。</p>
</li>
</ul>
</div>
<div class="section" id="s-guidelines">
<span id="guidelines"></span><h2>方针<a class="headerlink" href="#guidelines" title="永久链接至标题">¶</a></h2>
<p>作为大型项目的新手，很容易感到沮丧。 这里有一些建议可以使你在 Django 上的工作更加有用、 有收获。</p>
<ul>
<li><p class="first"><strong>选择一个您关心的，您熟悉的或您想了解的主题区</strong></p>
<p>你不必已是你想要工作的领域的专家; 您将通过对代码的持续贡献成为专家。</p>
</li>
<li><p class="first"><strong>Analyze tickets' context and history</strong></p>
<p>Trac不是绝对的；上下文和名词一样重要。在阅读Trac时，你需要考虑到账户谁说了什么，什么时候说的。两年前对一个想法的支持并不意味着这个想法还会得到支持。您还需要注意哪些人没有发言--例如，如果一位有经验的贡献者最近没有参与讨论，那么这份工单可能就不需要Django支持。</p>
</li>
<li><p class="first"><strong>从小的地方开始</strong></p>
<p>在小问题上得到反馈比在大问题上得到反馈要容易得多。请参阅 <a class="reference external" href="https://code.djangoproject.com/query?status=!closed&amp;easy=1">easy pickings</a>。</p>
</li>
<li><p class="first"><strong>If you're going to engage in a big task, make sure that your idea has
support first</strong></p>
<p>这意味着在您解决问题之前让其他人确认一个bug是真实的，并确保在您开始实现一个建议的特性之前有一个共识。</p>
</li>
<li><p class="first"><strong>Be bold! Leave feedback!</strong></p>
<p>有时候，把你的观点向全世界发表，说“这个工单是正确的”或者“这个补丁需要工作”，这可能会让人害怕，但这是项目向前推进的唯一途径。广泛的Django社区的贡献最终会比任何一个人的贡献产生更大的影响。没有**你**我们做不到！</p>
</li>
<li><p class="first"><strong>在标记要接收的提议时要小心</strong></p>
<p>如果你真的不确定一张工单是否准备好了，不要这样标记。留下注释，让别人知道你的想法。如果你基本上是肯定的，但不是完全确定，你也可以试着问一下IRC，看看是否有人能证实你的怀疑。</p>
</li>
<li><p class="first"><strong>等待反馈，并对收到的反馈做出回应</strong></p>
<p>专注于一两张工单，从头到尾看完，然后重复。短期途径接手很多工单，让一些工单在半路上掉下来，这样做的结果是弊大于利。</p>
</li>
<li><p class="first"><strong>Be rigorous</strong></p>
<p>当我们说 &quot;<span class="target" id="index-2"></span><a class="pep reference external" href="https://www.python.org/dev/peps/pep-0008"><strong>PEP 8</strong></a>,&nbsp; 并且必须有文档和测试&quot; 时，我们是认真的。如果补丁没有文档和测试，最好有一个好的理由。像“我找不到这个特性的任何现有测试”这样的论据不会有多少说服力——虽然这可能是真的，但这意味着你要为这个特性编写最初的测试，而不是完全通过编写测试获得通过。</p>
</li>
<li><p class="first"><strong>Be patient</strong></p>
<p>It's not always easy for your ticket or your patch to be reviewed quickly.
This isn't personal. There are a lot of tickets and pull requests to get
through.</p>
<p>Keeping your patch up to date is important. Review the ticket on Trac to
ensure that the <em>Needs tests</em>, <em>Needs documentation</em>, and <em>Patch needs
improvement</em> flags are unchecked once you've addressed all review comments.</p>
<p>Remember that Django has an 8 month release cycle, so there's plenty of time
for your patch to be reviewed.</p>
<p>Finally, a well-timed reminder can help. See <a class="reference internal" href="../../faq/contributing.html#new-contributors-faq"><span class="std std-ref">contributing code FAQ</span></a> for ideas here.</p>
</li>
</ul>
</div>
</div>


          </div>
        </div>
      </div>
      
        
          <div class="yui-b" id="sidebar">
            
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
        <div class="sphinxsidebarwrapper">
  <h3><a href="../../contents.html">Table of Contents</a></h3>
  <ul>
<li><a class="reference internal" href="#">对新贡献者的建议</a><ul>
<li><a class="reference internal" href="#first-steps">快速入门</a></li>
<li><a class="reference internal" href="#guidelines">方针</a></li>
</ul>
</li>
</ul>

  <h4>上一个主题</h4>
  <p class="topless"><a href="index.html"
                        title="上一章">为 Django 做贡献</a></p>
  <h4>下一个主题</h4>
  <p class="topless"><a href="bugs-and-features.html"
                        title="下一章">报告问题和请求新功能</a></p>
  <div role="note" aria-label="source link">
    <h3>本页</h3>
    <ul class="this-page-menu">
      <li><a href="../../_sources/internals/contributing/new-contributors.txt"
            rel="nofollow">显示源代码</a></li>
    </ul>
   </div>
<div id="searchbox" style="display: none" role="search">
  <h3>快速搜索</h3>
    <div class="searchformwrapper">
    <form class="search" action="../../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="转向" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    </div>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
              <h3>Last update:</h3>
              <p class="topless">12月 07, 2021</p>
          </div>
        
      
    </div>

    <div id="ft">
      <div class="nav">
    &laquo; <a href="index.html" title="为 Django 做贡献">previous</a>
     |
    <a href="../index.html" title="Django internals" accesskey="U">up</a>
   |
    <a href="bugs-and-features.html" title="报告问题和请求新功能">next</a> &raquo;</div>
    </div>
  </div>

      <div class="clearer"></div>
    </div>
  </body>
</html>